//隐式转换

// 1. 自动将数字转换为字符串
console.log("今年菇凉"+18) // 今年菇凉18

console.log("18"+18)// 1818

console.log("--------------------------------------------------------------")
// 2.表达式 - , * , /, %中的任意一个 , 此时js会将字符串的数字转换为数字

console.log("19"-18) // 1
console.log("19"*2) // 38
console.log("20"/2) // 10
console.log("20"%3) // 2
console.log("19"-"18") // 1
console.log("19"*"2") // 38
console.log("你好"*2) // NaN
console.log("----------------------------------------------------------------")

// 3.运算符号++ ,-- 会将字符串转换为数字 , 对于无法转换的字符串, 会转换为NaN

let a = "19"
let x = "19"
let b = "c" 

console.log(++a) // 20
console.log(x++) // 19
console.log(--a) // 19



console.log(b--)
console.log(b++)

console.log("----------------------------------------------------------------")

// 4. 比较运算符, 会将字符串转换为数字, 对于无法转换的字符串, 会转换为NaN


console.log("19"<20) // true

console.log("19">"10") // true


// 5. 逻辑运算符, 会将字符串转换为布尔值, 对于无法转换的字符串, 会转换为NaN

console.log("19"&&"10") // 10 ?为什么是10?  因为&&运算符, 只要有一个为false, 就会返回false, 否则返回最后一个值

console.log("19"||"") // 19?为什么是19?  因为||运算符, 只要有一个为true, 就会返回true, 否则返回最后一个值

// 6.! 运算符, 会将字符串转换为布尔值, 对于无法转换的字符串, 会转换为NaN

console.log(!"你好") // false 

// falsly value: 0, NaN, "", null, undefined, false , 0n ...


// 7.运算符号为==时 , 当运算符号 , 同时包含字符串和数字的时候 , js会将字符串转换为数字, 对于无法转换的字符串, 会转换为NaN

var m = "19"

var n = 19
//所以判断相等的同时 , 需要使用 ===  或者!== 来判断  因为 ===  或者!== 会判断类型是否相同, 类型不同, 则返回false
console.log(m==n) // true

console.log(m===n) // false

